#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2022/1/20 23:10
# @Author  : FLC
# @File    : base_api.py
# @Software: PyCharm

import uuid
import jsonpath as jsonpath
import requests
from interface.api_object.utils.log_tool import logger


class BaseApi:

    base_url = ""

    def send(self, method, url, **kwargs):
        """
        该方法用于发送请求
        :param method: 请求方法，传递一个HTTP Method, 如：“GET"
        :param url: 请求的url地址
        :param kwargs: 请求所需要的其他参数
        :return: 返回一个 requests.Response 对象
        """
        logger.info("开始发送请求")
        logger.info(f"请求方法为： {method}")
        logger.info(f"请求地址为：{self.base_url+url}")
        logger.info(f"请求参数是： {kwargs}")
        try:
            return requests.request(method, self.base_url+url, **kwargs)
        except Exception as e:
            logger.error(f"发生异常： {e}")

    def get_uuid(self):
        """
        该方法用于生成一个随机的id
        :return: 返回一个由字母，数字组成的8位字符串
        """
        logger.info("获取uuid")
        return str(uuid.uuid4()).split("-")[0]

    def json_parser(self, json_content, expr):
        """

        :param json_content: json内容
        :param expr: jsonpath的表达式
        :return:
        """
        logger.info("开始解析json")
        logger.info(f"json内容是：{json_content}")
        logger.info(f"解析表达式为： {expr}")
        try:
            return jsonpath.jsonpath(json_content, expr)
        except Exception as e:
            logger.error(f"发生异常： {e}")


if __name__ == '__main__':
    j = {
       "errcode": 0,
       "errmsg": "ok",
       "taglist":[
          {"tagid":1,"tagname":"a"},
          {"tagid":2,"tagname":"b"},
       ],
    }
    test = BaseApi().json_parser(j,"$..taglist[?(@.tagid==1)]")
    print(test)
